IF Fieldname$(x)="" THEN x=10 : NoOfFields=NoOfFields-1
Fieldname$(x)=LEFT$(Fieldname$(x),25)
LOCATE x+6,26 : PRINT SPACE$(40);
LOCATE x+6,26 : LINE INPUT Length$
IF Length$="" OR ABS(VAL(Length$))>40 THEN Length$="40"
Length(x)=INT(ABS(VAL(Length$)))
IF Length(x)=0 THEN Length(x)=40
NEXT x
Corrections:
GOSUB EntryOK
IF Corr=0 THEN OpenFile
IF Corr=1 THEN ErrorCorrection
GOTO Corrections
ErrorCorrection:
FOR x=0 TO NoOfFields
LOCATE x+6,1 : PRINT SPACE$(60)
LOCATE x+6,25 : PRINT Length(x)
LOCATE x+6,1 : PRINT Fieldname$(x)
NEXT x
FOR x=0 TO NoOfFields
LOCATE x+6,1 : LINE INPUT Fieldname$
IF Fieldname$<>"" THEN Fieldname$(x)=LEFT$(Fieldname$,25)
LOCATE x+6,26 : LINE INPUT Length$
IF ABS(VAL(Length$))>40 THEN Length$="40"
IF Length$<>"" THEN Length(x)=INT(ABS(VAL(Length$)))
IF Length(x)=0 THEN Length(x)=40
NEXT x
GOTO Corrections
OpenFile:
LOCATE 19,1 : PRINT SPACE$(60);
LOCATE 19,1 : COLOR 3,0 : PRINT "Enter Filename:";
COLOR 1,0 : LINE INPUT Nam$
RecordLength=0
FOR x=0 TO NoOfFields
RecordLength=RecordLength+Length(x)
NEXT x
IF Nam$="" OR RecordLength=0 THEN BEEP : GOTO Begin
OPEN "R",#1,Nam$,RecordLength
FIELD #1,Length(0) AS Dat$(0),Length(1) AS Dat$(1),Length(2) AS Dat$(2),Length(3) AS Dat$(3),Length(4) AS Dat$(4),Length(5) AS Dat$(5),Length(6) AS Dat$(6),Length(7) AS Dat$(7),Length(8) AS Dat$(8),Length(9) AS Dat$(9)
FOR x=1 TO NoOfFields
LSET Dat$(x)=" "
NEXT x
CLOSE 1
OPEN Nam$+".Flds" FOR OUTPUT AS 2
PRINT #2,NoOfFields
PRINT #2,RecordLength
PRINT #2,0
FOR x=0 TO NoOfFields
WRITE #2,Fieldname$(x)
PRINT #2,Length(x)
NEXT x
CLOSE 2
Altname$=Nam$
GOTO Begin
EnterData:
CLS : LOCATE 1,1 : PRINT "Enter data"
IF Nam$="" THEN
LOCATE 3,1 : COLOR 3,0 : PRINT "Enter Filename:"
COLOR 1,0 : LINE INPUT Nam$
IF Nam$="=" OR Nam$="*" THEN Nam$=Altname$
IF Nam$="" THEN Begin
Altname$=Nam$
END IF
GOSUB FieldFileExistYN
IF FileExist=0 THEN
COLOR 3,0 : PRINT
PRINT "Press any key."
WHILE INKEY$="" : WEND : COLOR 1,0
GOTO Begin
END IF
GOSUB ReadFileField
RecordNumber=NoOfRecords+1
OPEN "R",#1,Nam$,RecordLength
FIELD #1,Length(0) AS Dat$(0),Length(1) AS Dat$(1),Length(2) AS Dat$(2),Length(3) AS Dat$(3),Length(4) AS Dat$(4),Length(5) AS Dat$(5),Length(6) AS Dat$(6),Length(7) AS Dat$(7),Length(8) AS Dat$(8),Length(9) AS Dat$(9)
InputLoop:
CLS : LOCATE 1,1 : COLOR 1,0 : PRINT "Enter new data"
LOCATE 1,25 : COLOR 3,0 : PRINT "File:";
COLOR 1,0 : PRINT Nam$
Inpt=0
LOCATE 1,50 : PRINT "Record:";RecordNumber
PRINT : COLOR 3,0
PRINT "Enter new data:" : COLOR 1,0
FOR x=0 TO NoOfFields
LOCATE 5+x,1 : COLOR 2,0 : PRINT Fieldname$(x)": "
NEXT x : COLOR 1,0
FOR x=0 TO NoOfFields
LOCATE 5+x,LEN(Fieldname$(x))+3
LINE INPUT Entry$
IF Entry$<>"" THEN Inpt=1
Entry$(x)=LEFT$(Entry$,Length(x))
LSET Dat$(x) = Entry$(x)
NEXT x
Corrections2:
GOSUB EntryOK
IF Corr=0 THEN WriteRecord
IF Corr=1 THEN EnterCorrection
GOTO Corrections2
EnterCorrection:
CLS : LOCATE 1,1 : COLOR 1,0 :
PRINT "Add Data"
LOCATE 1,25 : COLOR 3,0 : PRINT "File:";
COLOR 1,0 : PRINT Nam$
LOCATE 1,50 : PRINT "Record:";RecordNumber
PRINT : PRINT
FOR x=0 TO NoOfFields
LOCATE 5+x,1 : COLOR 2,0 : PRINT Fieldname$(x)": ";
COLOR 1,0 : PRINT Entry$(x)
NEXT x
FOR x=0 TO NoOfFields
LOCATE 5+x,LEN(Fieldname$(x))+2
LINE INPUT Entry$
IF Entry$<>"" THEN
Inpt=1
Entry$(x)=LEFT$(Entry$,Length(x))
LSET Dat$(x) = Entry$(x)
END IF
NEXT x
GOTO Corrections2
WriteRecord:
IF Inpt=1 THEN
PUT #1,RecordNumber
IF DataFlag=1 THEN DataFlag=0 : GOTO ReadLoop
RecordNumber=RecordNumber+1
END IF
IF DataFlag=1 THEN DataFlag=0 : GOTO ReadLoop
NextYN:
LOCATE 19,1 : PRINT SPACE$(60) : COLOR 3,0
LOCATE 19,1 : PRINT "Next Record (Y/N)";
COLOR 1,0 : LINE INPUT a$
IF UCASE$(a$)="Y" OR a$="" THEN InputLoop
IF UCASE$(a$)="N" THEN CloseFile
GOTO NextYN
CloseFile:
CLOSE 1
OPEN Nam$+".Flds" FOR OUTPUT AS 2
PRINT #2,NoOfFields
PRINT #2,RecordLength
PRINT #2,RecordNumber-1
FOR x=0 TO NoOfFields
WRITE #2,Fieldname$(x)
PRINT #2,Length(x)
NEXT x
CLOSE 2
Nam$=""
GOTO Begin
ReadData:
CLS : LOCATE 1,1 : PRINT "Read Data"
IF DataSearch=1 THEN LOCATE 1,1 : PRINT "Search Data"
LOCATE 3,1 : COLOR 3,0 : PRINT "Enter filename:"
COLOR 1,0 : LINE INPUT Nam$
IF Nam$="=" OR Nam$="*" THEN Nam$=Altname$
IF Nam$="" THEN Begin
Altname$=Nam$
GOSUB FieldFileExistYN
IF FileExist=0 THEN
PRINT : COLOR 3,0
PRINT "Press any key."
COLOR 1,0
WHILE INKEY$="" : WEND
GOTO Begin
END IF
GOSUB ReadFileField
IF NoOfRecords=0 THEN
PRINT : BEEP
COLOR 1,0
PRINT "No records in file!"
PRINT : COLOR 3,0
PRINT "Press any key."
COLOR 1,0
WHILE INKEY$="" : WEND
GOTO Begin
END IF
IF DataSearch=1 THEN GOSUB SearchData
OPEN "R",#1,Nam$,RecordLength
FIELD #1,Length(0) AS Dat$(0),Length(1) AS Dat$(1),Length(2) AS Dat$(2),Length(3) AS Dat$(3),Length(4) AS Dat$(4),Length(5) AS Dat$(5),Length(6) AS Dat$(6),Length(7) AS Dat$(7),Length(8) AS Dat$(8),Length(9) AS Dat$(9)